package org.skywork.bll.process;

// *************************************************************************/
// Charada Soft
// Area de Desarrollo de Sistemas de Información
// *************************************************************************/
// Proyecto : SkyWork Data Access Layer
// Archivo : Validate.java
// Descripcion : Clase Validate
// *************************************************************************/
// Version : 2.11.8
// Fecha de Creación: 31 de Diciembre de 2014
// Author : Daniel Andres Castillo Pedroza
// *************************************************************************/

import org.skywork.bll.system.MessageControl;
import org.skywork.entitys.basic.Empresa;
import org.skywork.entitys.basic.Persona;
import org.tools.Result;
import org.tools.Tools;

public class Validate {
    
    // Métodos de la clase Validate
    
    /**
      * Este metodo nos permite validar si el texto contiene datos para realizar los 
      * diferentes proceso de Gestión de Datos. Donde el texto se establece con un objeto 
      * <code>String</code>.
      * 
      * @param texto Texto para validar en el metodo
      * @return Retorna el resultado en un dato <code>boolean</code>.
    */
    public static boolean isWrite(String texto) {
        if (Tools.isNull(texto)) {
            return false;
        }  // Si el texto es igual a null
        
        else {
            return !texto.isEmpty(); 
        } // Validando la longitud del texto
    }
    
    /**
     * Este método permite validar los campos de la Persona en el Sistema. Donde
     * la persona a validar se establece con un objeto <code>Persona</code>.
     * 
     * @param persona Persona a realizar proceso de validación
     * @return Retorna el resultado en un objeto <code>Result</code>.
     */
    public static Result validatePersona(Persona persona) {
        Format.setFormatPersona(persona); // Estableciendo formato a Persona
        
        // Instanciando y configurando objeto de Respuesta
        Result result = new Result(); result.setCode(Result.WARNING);
        
        if (!isWrite(persona.getIdentificacion())) {
            result.setMessage(MessageControl.get(MessageControl.PERSONA_SIN_CEDULA));
            return result;
        } // No ha establecido Cédula
        
        if (!isWrite(persona.getExpedicion())) {
            result.setMessage(MessageControl.get(MessageControl.PERSONA_SIN_EXPEDICION));
            return result;
        } // No ha establecido Lugar de Expedición
        
        if (!isWrite(persona.getNombres())) {
            result.setMessage(MessageControl.get(MessageControl.PERSONA_SIN_NOMBRES));
            return result;
        } // No ha establecido Nombres
        
        
        if (!isWrite(persona.getPrimerApellido())) {
            result.setMessage(MessageControl.get(MessageControl.PERSONA_SIN_PRIMER_APELLIDO));
            return result;
        } // No ha establecido Primer Apellido
        
        result.setSuccess(true); return result; // Retornando resultado de la Validación
    }
    
    /**
     * Este método permite validar los campos de la Empresa en el Sistema. Donde
     * la empresa a validar se establece con un objeto <code>Empresa</code>.
     * 
     * @param empresa Empresa a realizar proceso de validación
     * @return Retorna el resultado en un objeto <code>Result</code>.
     */
    public static Result validateEmpresa(Empresa empresa) {
        Format.setFormatEmpresa(empresa); // Estableciendo formato a Empresa
        
        // Instanciando y configurando objeto de Respuesta
        Result result = new Result(); result.setCode(Result.WARNING);
        
        if (!isWrite(empresa.getIdentificacion())) {
            result.setMessage(MessageControl.get(MessageControl.EMPRESA_SIN_NIT));
            return result;
        } // No ha establecido NIT
        
        if (!isWrite(empresa.getNombreEntidad())) {
            result.setMessage(MessageControl.get(MessageControl.EMPRESA_SIN_NOMBRE));
            return result;
        } // No ha establecido Nombre
        
        result.setSuccess(true); return result; // Retornando resultado de la Validación
    }
}